As those skilled in the art well understand, computer programming is rarely performed directly in machine language. Instead, programming is usually carried out in higher language form such as C, BASIC, FORTRAN, COBOL, PASCAL, etc. In the case of BASIC, a resultant "source" program can then be executed employing a machine resident interpreter program which reads the individual source code programming statements and converts them to machine instructions (appropriate for the hardware being used) on a statement by statement basis. This is a relatively slow process, however, and more efficient and very much faster execution of a BASIC program can be obtained by first processing it through a compiler program specifically created to prepare executable or "object" code in an optimum sequence for a given type of hardware. Compilation is routinely carried out (in fact, is required) even during the programming and program proving tasks for many of the high level programs such as C.
Some programmers prefer to work in a less high level, more machine specific, language designated "Assembly" which is readily reduced to machine level instructions with an "Assembler" program in an operation similar to, but much more straightforward than, compilation. The resultant object code is very efficient. However, because Assembly is a low level language, it is notoriously easy, during the coding process, to introduce subtle programming errors (or "bugs") which the Assembler will not catch and which may be particularly elusive to identify and remedy during the program proof (or "debugging") process.
One class of errors of this elusive sort are those in which an Assembly language statement is entirely legal in that syntax, limits, specification of operands, etc. are all properly incorporated, but the correctly configured statement is nonetheless apparently logically inconsistent with a previous operation. It is to the early detection of elusive programming errors of this class that the present invention is directed.